package com.edu.study.base.StuCommonClassifyCatalog.domain;

import com.edu.study.base.stuQuestionLibrary.domain.StuQuestionLibraryRy;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.data.annotation.Transient;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

import io.swagger.annotations.ApiModelProperty;

import java.util.ArrayList;
import java.util.List;

/**
 * 产品组件目录对象 stu_common_classify_catalog
 * 
 * @author zw
 * @date 2021-05-11
 */
public class StuCommonClassifyCatalog extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键id */
    private String id;

    /** 课程id:单元id:绘本id:活动id */
    @Excel(name = "课程id:单元id:绘本id:活动id")
    private String belongProductId;

    /** 目录对应的模板 */
    private String productCatalogTemplateId;

    /** 有些是需要目录编码的，比如说该视频属于什么板块，或者有一些其他的业务操作
            比如说朗文中不课文和跟读需要创建子目录，而子目录要配置的显示字段不同，
            也可以用这个编码与配置的编码匹配进行读取。 */
    @Excel(name = "目录编码")
    private String catalogCode;
    //逻辑字段，在数据库中不存在，用于逻辑判断
    private String Code;

    /** $column.columnComment */
    @Excel(name = "名称")
    private String catalogName;

    /** 图标 */
    @Excel(name = "图标")
    private String catalogIcon;

    /** $column.columnComment */
    @Excel(name = "排序")
    private Long catalogSort;

    /** 显示状态：0->不显示；1->显示 */
    @Excel(name = "显示状态：0->不显示；1->显示")
    private String catalogShowStatus;

    /** 只有目录才可以添加下级，并且目前，目录是不可以承载内容的， */
    @Excel(name = "只有目录才可以添加下级，并且目前，目录是不可以承载内容的，")
    private String ifOnlyCatalog;

    /** 是否会员专属 */
    private String ifVip;

    /** 分类级别：0->1级；1->2级 */
    @Excel(name = "分类级别：0->1级；1->2级")
    private String catalogLevel;

    /** 上级分类的编号：0表示一级分类 */
    @Excel(name = "上级分类的编号：0表示一级分类")
    private String catalogParentId;

    /** 描述 */
    @Excel(name = "描述")
    private String catalogDescription;

    /** 课程直接挂载学习组件资料库，也会经过本表，而不是存储在分类目录中；
            1：是 2：否，如果为课程直属，则不会以目录形式体现 */
    @Excel(name = "是否课程直属")
    private String ifDirectOwnCourse;

    @Excel(name = "目录组件")
    private String stuProductItemType;

    /** 现在目录添加资料库不再使用目录的学习组件资料库，因此每个目录使用的时候
            一定要选择所对应的题型编号，以便从目录中直接添加题库，如果本字段为空
            那么是需要从题库中进行选择！！！ */
    @Excel(name = "目录组件")
    private String stuProductItemTemplateId;

    /** 1:按sort排序 2：整个页面排列组合 */
    @Excel(name = "1:按sort排序 2：整个页面排列组合")
    private String componetRepRankType;

    /** 类似于及格值 */
    @Excel(name = "类似于及格值")
    private String learnComponetScore;

    /** 学习组件的权重
            总值按100计算
            参考组件装配内容权重
            计算学习进度参考指标之一 */
    @Excel(name = "学习组件的权重")
    private String weight;
    /** 目录下的资源数量 */
    private Long contentNum;

    private String ifDelete;
    
    @Transient
    @ApiModelProperty(value= "生词数量") 
    private Long wordNum;

    /** 会员id */
    private String memberId;

    /** 学习状态 */
    private String courseLearnStatus;

    private List<StuCommonClassifyCatalog> children = new ArrayList<>();
    private List<StuQuestionLibraryRy> questions = new ArrayList<>();

    public String getCourseLearnStatus() {
        return courseLearnStatus;
    }

    public void setCourseLearnStatus(String courseLearnStatus) {
        this.courseLearnStatus = courseLearnStatus;
    }

    public List<StuQuestionLibraryRy> getQuestions() {
        return questions;
    }

    public void setQuestions(List<StuQuestionLibraryRy> questions) {
        this.questions = questions;
    }

    public List<StuCommonClassifyCatalog> getChildren() {
        return children;
    }

    public void setChildren(List<StuCommonClassifyCatalog> children) {
        this.children = children;
    }

    public String getCode() {
        return Code;
    }

    public void setCode(String code) {
        Code = code;
    }

    public String getIfDelete() {
        return ifDelete;
    }

    public void setIfDelete(String ifDelete) {
        this.ifDelete = ifDelete;
    }

    public Long getContentNum() {
        return contentNum;
    }

    public void setContentNum(Long contentNum) {
        this.contentNum = contentNum;
    }

    public void setId(String id)
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }
    public void setBelongProductId(String belongProductId) 
    {
        this.belongProductId = belongProductId;
    }

    public String getBelongProductId() 
    {
        return belongProductId;
    }

    public String getProductCatalogTemplateId() {
        return productCatalogTemplateId;
    }

    public void setProductCatalogTemplateId(String productCatalogTemplateId) {
        this.productCatalogTemplateId = productCatalogTemplateId;
    }

    public String getStuProductItemType() {
        return stuProductItemType;
    }

    public void setStuProductItemType(String stuProductItemType) {
        this.stuProductItemType = stuProductItemType;
    }

    public void setCatalogCode(String catalogCode)
    {
        this.catalogCode = catalogCode;
    }

    public String getCatalogCode() 
    {
        return catalogCode;
    }
    public void setCatalogName(String catalogName) 
    {
        this.catalogName = catalogName;
    }

    public String getCatalogName() 
    {
        return catalogName;
    }
    public void setCatalogIcon(String catalogIcon) 
    {
        this.catalogIcon = catalogIcon;
    }

    public String getCatalogIcon() 
    {
        return catalogIcon;
    }
    public void setCatalogSort(Long catalogSort) 
    {
        this.catalogSort = catalogSort;
    }

    public Long getCatalogSort() 
    {
        return catalogSort;
    }
    public void setCatalogShowStatus(String catalogShowStatus) 
    {
        this.catalogShowStatus = catalogShowStatus;
    }

    public String getCatalogShowStatus() 
    {
        return catalogShowStatus;
    }
    public void setIfOnlyCatalog(String ifOnlyCatalog) 
    {
        this.ifOnlyCatalog = ifOnlyCatalog;
    }

    public String getIfOnlyCatalog() 
    {
        return ifOnlyCatalog;
    }
    public void setCatalogLevel(String catalogLevel) 
    {
        this.catalogLevel = catalogLevel;
    }

    public String getCatalogLevel() 
    {
        return catalogLevel;
    }
    public void setCatalogParentId(String catalogParentId) 
    {
        this.catalogParentId = catalogParentId;
    }

    public String getCatalogParentId() 
    {
        return catalogParentId;
    }
    public void setCatalogDescription(String catalogDescription) 
    {
        this.catalogDescription = catalogDescription;
    }

    public String getCatalogDescription() 
    {
        return catalogDescription;
    }
    public void setIfDirectOwnCourse(String ifDirectOwnCourse) 
    {
        this.ifDirectOwnCourse = ifDirectOwnCourse;
    }

    public String getIfDirectOwnCourse() 
    {
        return ifDirectOwnCourse;
    }
    public void setStuProductItemTemplateId(String stuProductItemTemplateId) 
    {
        this.stuProductItemTemplateId = stuProductItemTemplateId;
    }

    public String getStuProductItemTemplateId() 
    {
        return stuProductItemTemplateId;
    }
    public void setComponetRepRankType(String componetRepRankType) 
    {
        this.componetRepRankType = componetRepRankType;
    }

    public String getComponetRepRankType() 
    {
        return componetRepRankType;
    }
    public void setLearnComponetScore(String learnComponetScore) 
    {
        this.learnComponetScore = learnComponetScore;
    }

    public String getLearnComponetScore() 
    {
        return learnComponetScore;
    }
    public void setWeight(String weight) 
    {
        this.weight = weight;
    }

    public String getWeight() 
    {
        return weight;
    }
     
    public Long getWordNum() {
		return wordNum;
	}

	public void setWordNum(Long wordNum) {
		this.wordNum = wordNum;
	}

    public String getIfVip() {
        return ifVip;
    }

    public void setIfVip(String ifVip) {
        this.ifVip = ifVip;
    }

    public String getMemberId() {
        return memberId;
    }

    public void setMemberId(String memberId) {
        this.memberId = memberId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("belongProductId", getBelongProductId())
            .append("catalogCode", getCatalogCode())
            .append("catalogName", getCatalogName())
            .append("catalogIcon", getCatalogIcon())
            .append("catalogSort", getCatalogSort())
            .append("catalogShowStatus", getCatalogShowStatus())
            .append("ifOnlyCatalog", getIfOnlyCatalog())
            .append("catalogLevel", getCatalogLevel())
            .append("catalogParentId", getCatalogParentId())
            .append("catalogDescription", getCatalogDescription())
            .append("ifDirectOwnCourse", getIfDirectOwnCourse())
            .append("stuProductItemTemplateId", getStuProductItemTemplateId())
            .append("componetRepRankType", getComponetRepRankType())
            .append("learnComponetScore", getLearnComponetScore())
            .append("weight", getWeight())
            .toString();
    }
}
